<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

/**
 * 生产环境专用Seeder
 * 只包含系统运行必需的基础数据，不包含测试数据
 */
class ProductionSeeder extends Seeder
{
    /**
     * 运行生产环境数据填充
     */
    public function run(): void
    {
        $this->command->info('🚀 开始填充生产环境数据...');
        
        // 使用事务确保数据一致性
        \DB::transaction(function () {
            // 1. 系统设置（必需）
            $this->command->info('⚙️  创建系统设置...');
            $this->call(SystemSettingSeeder::class);
            
            // 2. 地址数据（必需）
            $this->command->info('🗺️  创建地址数据...');
            $this->call(ProvinceSeeder::class);
            $this->call(CitySeeder::class);
            $this->call(DistrictSeeder::class);
            
            // 3. 管理员用户（必需）
            $this->command->info('👥 创建管理员用户...');
            $this->call(UserSeeder::class);
            
            // 4. 分类数据（必需）
            $this->command->info('📂 创建分类数据...');
            $this->call(CategorySeeder::class);
            
            // 5. 规格属性（必需）
            $this->command->info('🔧 创建规格属性...');
            $this->call(SpecificationAttributeSeeder::class);
            
            // 6. 规格模板（必需）
            $this->command->info('📋 创建规格模板...');
            $this->call(SpecificationTemplateSeeder::class);
            
            // 7. 物流公司数据（必需）
            $this->command->info('🚚 创建物流公司数据...');
            $this->call(LogisticsCompanySeeder::class);
            
            // 8. 优惠券数据（必需）
            $this->command->info('🎫 创建优惠券数据...');
            $this->call(CouponSeeder::class);
        });
        
        $this->command->info('✅ 生产环境数据填充完成！');
        $this->command->info('💡 请通过管理后台手动创建产品、用户地址等业务数据');
        $this->command->info('🔐 请立即修改管理员密码！');
    }
}
